package br.com.app.template;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Base64;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.IgnoredWhenDetached;
import org.androidannotations.annotations.UiThread;
import org.androidannotations.annotations.ViewById;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import br.com.app.template.model.Token;
import br.com.app.template.model.Tweet;
import br.com.app.template.model.TweetList;
/**
* Created by artur on 13/08/15.
*
* A very simple sample using AndroidAnnotations, RecyclerView, CardView accessing
* a REST service using OkHttp and Retrofit.
*/
@EFragment(R.layout.fragment_main)
public class MainActivityFragment extends Fragment {
public static final String TAG = MainActivityFragment.class.getName();
@ViewById
RecyclerView recyclerView;
@AfterViews
void init() {
if (recyclerView.getLayoutManager() == null)
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
if (recyclerView.getItemAnimator() == null)
recyclerView.setItemAnimator(new DefaultItemAnimator());
if (recyclerView.getAdapter() == null || recyclerView.getAdapter().getItemCount() <= 0) {
getTweets();
}
}
@Background
void getTweets() {
AppApplication appApplication = (AppApplication) getActivity().getApplication();
TwitterService twitterService = appApplication.getTwitterService();
try {
String urlApiKey = URLEncoder.encode(BuildConfig.TWITTER_USER_API_KEY, "UTF-8");
String urlApiSecret = URLEncoder.encode(BuildConfig.TWITTER_USER_API_SECRET, "UTF-8");
String combined = urlApiKey + ":" + urlApiSecret;
String base64Encoded = Base64.encodeToString(combined.getBytes(), Base64.NO_WRAP);
Token credentials = twitterService.getToken("Basic " + base64Encoded,
"application/x-www-form-urlencoded;charset=UTF-8", "client_credentials");
TweetList tweets = twitterService.getTweets("Bearer " + credentials.getAccess_token(), "application/json");
populateRecycleView(tweets.getStatuses());
} catch (Exception e) {
Snackbar.make(getView(), "OOPS, Something was wrong on tweet load", Snackbar.LENGTH_LONG).show();
e.printStackTrace();
}
}
@IgnoredWhenDetached
@UiThread
void populateRecycleView(List<Tweet> tweets) {
TweetAdapter tweetAdapter = new TweetAdapter((ArrayList<Tweet>) tweets, this);
recyclerView.setAdapter(tweetAdapter);
}
@Override
public void onDestroy() {
recyclerView.setAdapter(null);
super.onDestroy();
}
}